﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Wise.Entities
{
    public class 组合字段
    {
        public string 转换名称 { get; set; }
        
        public List<string> 转换参数 { get; set; }
    }

    public class 自定义转换
    {
        public string 转换名称 { get; set; }
    }

    [JsonObject(MemberSerialization.OptIn)]
    public class 字段映射 : _MyMap
    {
        public override string ToString()
        {
            return $"[{旧数据库字段}]=>[{新数据库字段}]";
        }

        [JsonProperty]
        [NonSerialized]
        public bool _Exists = false;

        //public bool IsChecked { get; set; }

        [JsonProperty]
        [Description("DateTime,[],1,1,1,[Hour],[Minute],0")]
        public 组合字段 组合字段 { get; set; }


        [JsonProperty]
        public bool 加密数据 { get; set; }

        [JsonProperty]
        public 字段引用 引用 { get; set; }        

        string _旧数据库字段 = string.Empty;
        [JsonProperty]
        public string 旧数据库字段
        {
            get
            {
                return _旧数据库字段;
            }
            set
            {
                _旧数据库字段 = value;
                OnPropertyChange(nameof(this.旧数据库字段));
            }
        }

        string _新数据库字段 = string.Empty;
        [JsonProperty]
        public string 新数据库字段
        {
            get
            {
                return _新数据库字段;
            }
            set
            {
                _新数据库字段 = value;
                OnPropertyChange(nameof(this.新数据库字段));
            }
        }

        string _默认值 = string.Empty;
        [JsonProperty]
        /// <summary>
        /// 仅在数据源是NULL值时有效
        /// </summary>
        public string 默认值
        {
            get
            {
                return _默认值;
            }
            set
            {
                _默认值 = value;
                OnPropertyChange(nameof(this.默认值));
            }
        }

        /// <summary>
        /// 用于处理文件
        /// </summary>
        [JsonProperty]
        public string 文件主键 { get; set; }

        /// <summary>
        /// 
        /// </summary>
        [JsonProperty]
        public 自定义转换 转换 { get;set;}

        [JsonProperty]
        public bool 禁止更新 { get; set; }

        //[Obsolete("已被表映射的同步条件替代")]
        //ColumnNotExistsActionType _不存在操作 = 0;

        //[Obsolete("已被表映射的同步条件替代")]
        //public ColumnNotExistsActionType 不存在操作
        //{
        //    get
        //    {
        //        return _不存在操作;
        //    }
        //    set
        //    {
        //        _不存在操作 = value;
        //        OnPropertyChange(nameof(this.不存在操作));
        //    }
        //}


        //[Obsolete("已被表映射的同步条件替代")]
        //ColumnExistsActionType _已存在操作 = 0;
        //[Obsolete("已被表映射的同步条件替代")]
        //public ColumnExistsActionType 已存在操作
        //{
        //    get
        //    {
        //        return _已存在操作;
        //    }
        //    set
        //    {
        //        _已存在操作 = value;
        //        OnPropertyChange(nameof(this.已存在操作));
        //    }
        //}
    }

    /// <summary>
    /// 不存在字段操作方式
    /// </summary>
    [Obsolete("已被表映射的同步条件替代")]
    public enum ColumnNotExistsActionType : int
    {
        新增 = 0
            ,
        跳过
    }
    /// <summary>
    /// 已存在字段操作方式
    /// </summary>
    [Obsolete("已被表映射的同步条件替代")]
    public enum ColumnExistsActionType : int
    {
        跳过 = 0
            ,
        覆盖值
    }
    
}
